package com.bifrost.service;

import com.bifrost.common.base.ServerResponse;
import com.bifrost.common.model.ResultModel;
import com.bifrost.entity.User;
import com.bifrost.model.param.RoleParam;

public interface RoleService {
    /**
     * 添加角色，并同时给角色分配权限（如果permissionIds.size=0，那么只添加角色，不分配权限）
     * @param permissionIds 给角色分配的权限（可以没有数据）
     * @param roleParam 角色
     */
    ServerResponse add(Integer[] permissionIds, RoleParam roleParam);

    /**
     * 删除roleId对用的角色
     * @param roleId 要删除的角色对应的id，不可以为空
     * @return
     */
    ResultModel delete(Integer roleId);

    /**
     * 获取角色列表数据
     * @param currentPage 当前要显示的页面的页码（如果前端没有传值过来，默认值为1）
     * @return
     */
    ServerResponse list(Integer currentPage, Integer pageSize, String roleName);

    /**
     * 更新角色信息
     * @param roleParam 需要更新的角色（注意：该对象的id属性不能为空）
     * @param permissonIds 该角色对用的权限（可以为空）
     * @param currentUser 更新角色信息的用户
     * @return
     */
    ServerResponse update(RoleParam roleParam, Integer[] permissonIds, User currentUser);

    /**
     * 获取角色详情
     * @param roleId
     */
    ServerResponse getDetail(Integer roleId);

    /**
     * 根据用户名查询角色
     * @param roleName 角色用户名
     * @return
     */
    ServerResponse select(Integer currentPage, Integer pageSize, String roleName);

    /**
     * 批量删除角色
     * @param roleIds
     * @return
     */
    ServerResponse batchDelete(Integer[] roleIds);

    /**
     * 用于新增用户获取角色列表
     * @return
     */
    ServerResponse listForUserAdd();
}
